package fr.esisar.p2014.cs420.nsmwnr;

import java.io.InputStream;
import java.sql.SQLException;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

public class MainApp {

	public static String nom = "";
	public static String prenom = "";
	public static String mail = "";
	public static String adresse = "";
	public static boolean estAdmin = false;
	public static int idClient = 0;
	
	public static Statistiques stats;
	public static Connexion conn;
	public static AfficherAlbum affAlbum;
	public static Consultation consult;
	public static ModifierAlbum modAlbum;
	public static Commander commander;
	public static CreerAlbum creationA;
	public static CreerLivre creationL;
	public static InfosClient infosClient;
	
	public static Image icone;
	
	public static Display display;
	
	public MainApp(){
		
	}
	
	public void execute(){
		display = new Display();

		/* Chargement d'une icone (fonctionne dans un jar) */
		try {
			InputStream is = this.getClass().getResourceAsStream("/Photo.png");
			icone = new Image(display, is);
			JDBC.getInstance();
		}catch(SQLException e){
			erreurBase(e.getMessage());
		}catch (Exception e) {
			System.err.println("Impossible de charger l'image !");
		}
		
		/* Initialisation des fenêtres */
		stats = new Statistiques();
		conn = new Connexion();
		affAlbum = new AfficherAlbum();
		modAlbum = new ModifierAlbum();
		consult = new Consultation();
		commander = new Commander();
		consult = new Consultation();
		creationA = new CreerAlbum();
		creationL = new CreerLivre();
		infosClient = new InfosClient();

		consult.setActive();
		
		/* Attendre que toutes les fenêtres soient fermées */
		while(stats.estLance() || affAlbum.estLance() || modAlbum.estLance() || consult.estLance() || commander.estLance() || creationA.estLance() || creationL.estLance() || infosClient.estLance()){
			if(!display.readAndDispatch()){
				display.sleep();
			}
		}

		display.dispose();
		try {
			JDBC.getInstance().quitter();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/*
	 * Réactualise toutes les valeurs de toutes les fenêtres.
	 */
	public static void rafraichir(){
		if (stats.estLance()) stats.rafraichir();
		if (affAlbum.estLance()) affAlbum.rafraichir();
		if (modAlbum.estLance()) modAlbum.rafraichir();
		if (commander.estLance()) commander.rafraichir();
		if (consult.estLance()) consult.rafraichir();
		if (creationA.estLance()) creationA.rafraichir();
		if (creationL.estLance()) creationL.rafraichir();
		if (infosClient.estLance()) infosClient.rafraichir();
	}
	
	public static void erreurBase(String m){
		MessageBox dialog;
		Shell shell = new Shell(display);
		dialog = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
		dialog.setText("Erreur survenue avec la base de données !");
		dialog.setMessage(m);
		dialog.open();
		while(!shell.isDisposed()){
			if(!display.readAndDispatch()){
				display.sleep();
			}
		}
		display.dispose();
		System.exit(0);
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MainApp m = new MainApp();
		m.execute();
	}
}
